#include <iostream>
#include <map>
#include <vector>
using namespace std;

#include <getopt.h>
#include <cstdarg>
#include <cstdio>
#include <cstdlib>

#include "jamunit++.h"

void err(const char *);
void ferr(const char *);

void errf(const char *, ...);
void ferrf(const char *, ...);

void errv(const char *, va_list);
void ferrv(const char *, va_list);

char *xname;

void err(const char *msg) {
	errf("%s", msg);
}

void ferr(const char *msg) {
	ferrf("%s", msg);
}

void errf(const char *msg, ...) {
	va_list args;
	va_start(args, msg);
	errv(msg, args);	
	va_end(args);
}

void ferrf(const char *msg, ...) {
	va_list args;
	va_start(args, msg);
	errv(msg, args);
	va_end(args);
	exit(255);
}

void errv(const char *msg, va_list args) {
	fprintf(stderr, "%s: ", xname);
	vfprintf(stderr, msg, args);
	fprintf(stderr, "\n");
}

void ferrv(const char *msg, va_list args) {
	errv(msg, args);
	exit(255);
}

int main(int argc, char *argv[]) {
	char *xname = argv[0];
	int c;
	opterr = 0;
	while ((c = getopt(argc, argv, "")) != -1)
		switch (c) {
		case '?':
			switch (optopt) {
			default:
				ferrf("-%c: unknown option", optopt);
			}
		default:
			ferrf("unknown error (%s:%d)", __FILE__, __LINE__);
		}

	return 0;
}

